package keer.httpinterface.proxy;
import keer.httpinterface.http.HttpRequest;

/**
 * NoBodyRequestAnnotationConfigure类继承自HttpRequestAnnotationConfigure
 * 用于配置不需要请求体的HTTP请求
 * 它重写了configure方法以定制HTTP请求的创建过程
 * @see HttpRequestAnnotationConfigure
 * @see HttpRequest
 * @see keer.httpinterface.proxy.HttpRequestAnnotationConfigure.ConfigureContext
 *
 * @author Keer
 * @since 1.0.0
 */
public class NoBodyRequestAnnotationConfigure extends HttpRequestAnnotationConfigure {

    /**
     * 配置HTTP请求
     *
     * 此方法重写自HttpRequestAnnotationConfigure类，用于创建并配置HTTP请求
     * 它根据上下文中的URL和方法创建一个没有请求体的HTTP请求，并设置参数和头部
     *
     * @param context 包含请求上下文信息的ConfigureContext对象，包括URL、请求方法、参数和头部
     * @return 返回配置好的HttpRequest对象
     * @throws Exception 如果请求创建过程中发生错误，则抛出异常
     */
    @Override
    protected final HttpRequest configure(ConfigureContext context) throws Exception {
        // 根据上下文中的URL和请求方法创建一个没有请求体的HTTP请求
        HttpRequest request = HttpRequest.create(context.getUrl(), context.getMethod(), null);

        // 将上下文中的参数添加到请求的参数中
        request.getParams().putAll(context.getParams());

        // 将上下文中的头部添加到请求的头部中
        request.getHeaders().putAll(context.getHeaders());

        // 返回配置好的HTTP请求
        return request;
    }
}
